package logique.parser.factories;

import java.util.LinkedList;

import logique.reseau.classements.Autoroute;
import logique.reseau.classements.Classement;
import logique.reseau.classements.Departementale;
import logique.reseau.classements.Nationale;

/**
 * 
 * @author camille
 *
 */
public class ClassementFactory {

	public static final String AUTOROUTE = "autoroute";
	public static final String NATIONALE = "nationale";
	public static final String DEPARTEMENTALE = "departementale";

	private static ClassementFactory singleton;
	private final LinkedList<Classement> allInstances;

	private ClassementFactory() {
		allInstances = new LinkedList<Classement>();
		allInstances.add(Autoroute.getInstance());
		allInstances.add(Nationale.getInstance());
		allInstances.add(Departementale.getInstance());
	}

	public static ClassementFactory getInstance() {
		if (singleton == null) {
			singleton = new ClassementFactory();
		}

		return singleton;
	}

	public Classement getInstanceClassement(String id) {
		if (id.toLowerCase().equals(AUTOROUTE)) {
			return Autoroute.getInstance();
		}

		if (id.toLowerCase().equals(NATIONALE)) {
			return Nationale.getInstance();
		}

		if (id.toLowerCase().equals(DEPARTEMENTALE)) {
			return Departementale.getInstance();
		}

		return null;
	}
	
	public LinkedList<Classement> getAllInstances(){
		return allInstances;
	}
}
